剑指offer 49.把字符串转换成整数

剑指offer 49.把字符串转换成整数

题目

题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述:
输入一个字符串,包括数字字母符号,可以为空

输出描述:
如果是合法的数值表达则返回该数字,否则返回0

示例
输入
+2147483647
1a33
输出
2147483647
0

思路

面向结果编程了,最小负数我技穷做不出来,就额外加了个判断。
首先是首位的符号位,若有则记录下来,别的都是*10,再加当前位数,最后输出时候注意前面的符号位。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public int StrToInt(String str) {
if (str.equals("") || str.length() == 0) {
return 0;
}
if (str.equals("-2147483648")) {
return -2147483648;
}
char[] c = str.toCharArray();
boolean flag = true;
int sum = 0;
for (char i : c) {
if (i == '+') {
continue;
} else if (i == '-') {
flag = false;
} else if (i < 48 || i > 57) {
return 0;
} else {
int temp = sum * 10 + i - 48;
if (((temp - i + 48) / 10 != sum) || temp % 10 < 0) {
return 0;
}
sum = temp;
}
}
return flag ? sum : (-1) * sum;
}
---本文结束,感谢阅读---